/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.marcelo.comun.file;

import java.io.*;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

/**
 *
 * @author marcelo
 * La idea es manejar la apertura y cierre de archivos con este hepler
 * Tambien proporcionar un metodo estatico para la muestra de apertura de archivos CVS u otros tipos de filtrados
 * Tambien puede ser para guardar el archivo en el
 */
public class FilesHelper {
    
    File archivo;
    String encodign;
    String url;
    
    
    InputStream inputStream;
    private static String DEFAULT_ENCODING = "utf-8";
    private static Boolean SELECCION_SIMPLE = Boolean.FALSE; 
    BufferedReader reader;

   private void init() {
       try {
           InputStreamReader isr = new InputStreamReader(new FileInputStream(archivo), DEFAULT_ENCODING);
           this.reader =   new BufferedReader(isr);
           if (!archivo.exists()) {
               //No existe el archivo lanzar error;
           }
       }
       catch(FileNotFoundException fileNotFoundException) {}
       catch(UnsupportedEncodingException encodingException) {}
   }
    
            
    public FilesHelper(File file) {
        this.archivo = file;
        init();
    }
    
    
    public FilesHelper(String pathName) {
        this.archivo = new File(pathName);
        init();
    }
    
    public FilesHelper(File parent, String child){
        this.archivo = new File(parent, child);
        init();
    }
    
    public FilesHelper(String parent, String child){
        this.archivo = new File(parent, child);
        init();
    }
    
    public BufferedReader getBuffReader() throws IOException{
        if (! archivo.exists() )
            throw new IOException("El archivo que intenta abrir no existe!!!");
        return this.reader;
    }
    
    public static File showOpenDilogForCSV(){
        return showOpenDialog(new CSVFileFilter());
    }
    
    /**
     * Retorna sin filtros la vanta de Apertura de archivos
     * 
     */
     
    public static File showOpenDialog() {
        return showOpenDialog(null);
    }
    
    /**
     * Muestra la ventana modal para la seleccion de archivo
     * solo permite seleccionar un archivo
     * filtra por la extencion csv
     * Si no encuentra archivo, o se sale de la ventana retorna null
     * @return file
     * @param FileFilter para filtrar la lista de archivos
     */
    public static File showOpenDialog(FileFilter filter) {
        File ArchivoSeleccionado;
        JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Abrir fichero..."); //NOI18N
        chooser.setMultiSelectionEnabled(SELECCION_SIMPLE);
        chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        if (filter != null)
            chooser.setFileFilter(filter);
        int sel = chooser.showOpenDialog(null); //En vez de null puedes especificar una ventana para que se quede congelada a espera de que hagas la seleccion
        if (sel == JFileChooser.APPROVE_OPTION) {
	   ArchivoSeleccionado = chooser.getSelectedFile();
	   String rutaCarpeta = ArchivoSeleccionado.getAbsolutePath();
           System.out.print("Archivo: -->" + ArchivoSeleccionado.toString() + "\n");
           System.out.print("---Ruta: -->" + rutaCarpeta);
           return ArchivoSeleccionado;
        }
        return null;
    }
}
